package object04;
/*
  所有的类都继承object
  由于equals方法比较两个对象的地址值没有任何意义
  因此我们通过比较两个对象的属性值
  如果两个对象的属性值完全相同，那么equals方法返回true
  如果两个对象中至少有一个属性不同，equals返回false
  例如：
     Person  如果两个Person对象的姓名和年龄均相同，那么equals返回true
             如果两个Person对象中至少有一个属性不同，equals返回false
 */
public class Person /* extends Object */{
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }



    @Override
    public boolean equals(Object obj) {//p1.equals（p2）
                                       //Object obj=p2
        /*
        if(比较两个人对象姓名&&比较两个人对象的年龄）
         return  true
         else
         return false
         */
        //由于obj是Object类型，在Object里面不存在age变量，age是Person（子类）特有的
        //我们只能通过Person类型来调用
        Person p=(Person)obj; //强制转换
        //下面两个也可以省略，简化
        boolean b1=(this.age==p.age);//比较年龄
        boolean b2 = this.name.equals(p.name);//比较姓名  通过String类的equals()方法比较两个字符串内容

        /*if (b1 && b2) {
            return true;
        } else {
            return false;
        }*/

       /* if (this.age == p.age && this.name.equals(p.name)) {
            return true;
        } else {
            return false;
        }
        */

        return this.age==p.age&&this.name.equals(p.name);
    }
}
